//
//  MOEditorViewController.h
//  MOED, Version 1.0
//
//  http://moed.googlecode.com/
//
//  Copyright (c) 2011, Eternity Technologies.
//  All rights reserved.
// 
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//    * Redistributions of source code must retain the above copyright
//      notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above copyright
//      notice, this list of conditions and the following disclaimer in the
//      documentation and/or other materials provided with the distribution.
//    * Neither the name of the Eternity Technologies nor the
//      names of its contributors may be used to endorse or promote products
//      derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY ETERNITY TECHNOLOGIES ''AS IS'' AND ANY
//  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//  DISCLAIMED. IN NO EVENT SHALL ETERNITY TECHNOLOGIES BE LIABLE FOR ANY
//  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
//  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

#define FONT_SIZE 18.0f
#define CELL_CONTENT_WIDTH 180.0f
#define CELL_CONTENT_MARGIN 10.0f

@class MOFormDescription;

@interface MOEditorViewController : UITableViewController <UITextFieldDelegate> {

	
	NSManagedObjectContext		*managedObjectContext;
	NSManagedObject				*managedObject;
	
	NSManagedObject				*originalManagedObject;
	
	MOFormDescription			*formDescription;
	
	BOOL						readOnly;
	BOOL						showCancelButton;
	BOOL						deleteOnCancel;
	BOOL						isModal;
	BOOL						isInsert;
	BOOL						saveOnDone;
	BOOL						selectFirstRowOnAppear;

@private
	
	BOOL						wasCanceled;
	
}

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObject *managedObject;

@property (nonatomic, assign) BOOL readOnly;
@property (nonatomic, assign) BOOL showCancelButton;
@property (nonatomic, assign) BOOL deleteOnCancel;
@property (nonatomic, assign) BOOL isModal;
@property (nonatomic, assign) BOOL isInsert;
@property (nonatomic, assign) BOOL selectFirstRowOnAppear;
@property (nonatomic, assign) BOOL saveOnDone;

/*! 
 @function initWithFormDescription
 @abstract Inits a Form Renderer with a Description
 @parameter sourceFormDescription
 @discussion 
 */

- (id) initWithFormDescription:(MOFormDescription *) sourceFormDescription;

- (void) validateManagedObject;

@end
